home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / demosrc / timesrc / l0.asm < prev    next >
Encoding:
Assembly Source File  |  1994-02-25  |  8.2 KB  |  337 lines

  1.         .386p
  2. code32  segment para public use32
  3.         assume cs:code32, ds:code32
  4.  
  5. include pmode.inc
  6. include argc.inc
  7. include vrt.inc
  8. include sc.inc
  9. include grfx.inc
  10. include v.inc
  11.  
  12. public  _l0_setup, _l0start
  13.  
  14. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  15. ; DATA
  16. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  17. align 4
  18. routtbl         dd      m00,p00,m01,p10,m02,waitpals
  19. ROUTTBLSTART=($-routtbl)/4
  20.                 dd      m03,p20,m04,waitpals,m05
  21.                 dd      delay,p30,m06,p30,m07,p30,m08,waitpals,p40,delay,m09
  22.                 dd      m0a,p30,delay,p50,m0b,delay,m0c,waitpals,p60,m0d,p70
  23.                 dd      delay,m0e,p30,delay,m0f,p80,delay,m10,p30,m11,p30,p90
  24.                 dd      delay,m12,p70,m13,p20,m14,waitpals,p60,m15,p30,delay
  25.                 dd      m16,p30,delay
  26. ROUTTBLLEN=($-routtbl)/4
  27.  
  28. palptrtbl       dd      pal02, pal00,pal01,pal06,pal09,pal01,pal07,pal04,pal03
  29.                 dd      pal05,pal0e,pal0d,pal0c,pal0b,pal03
  30.                 dd      pal01,pal0f,pal10,pal04,pal08,pal0b
  31. PALTBLLEN=($-palptrtbl)/4
  32.  
  33. pal0aptr        dd      pal0a
  34.  
  35. delaycntr       dw      ?
  36.  
  37. palindex        db      0
  38. routtblindex    db      0
  39.  
  40. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  41. ; CODE
  42. ;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  43.  
  44. @set_palso      macro   index, len, ptr
  45.         cmp _ending,0
  46.         jne _ret
  47.         mov _pals_ptr,offset &ptr
  48.         mov _pals_index,&index
  49.         mov _pals_len,&len
  50.         mov _vrt_rout,offset _pals
  51. endm
  52.  
  53. @set_pals       macro   index, len, ptr
  54.         cmp _ending,0
  55.         jne _ret
  56.         mov _pals_ptr,&ptr
  57.         mov _pals_index,&index
  58.         mov _pals_len,&len
  59.         mov _vrt_rout,offset _pals
  60. endm
  61.  
  62. @set_palo       macro   index, len, ptr
  63.         cmp _ending,0
  64.         jne _ret
  65.         mov esi,offset &ptr
  66.         mov _vrt_palptr,esi
  67.         mov ecx,&index
  68.         mov _vrt_palindex,cl
  69.         lea edi,[ecx*2+ecx+offset _cpal]
  70.         mov ecx,&len
  71.         mov _vrt_pallen,cx
  72.         lea ecx,[ecx*2+ecx]
  73.         rep movsb
  74. endm
  75.  
  76. @palnext        macro   cb
  77.         mov al,&cb
  78.         call nextpal
  79. endm
  80.  
  81. @palnexts       macro   cb
  82.         mov al,&cb
  83.         call nextpals
  84. endm
  85.  
  86. include l0p0.m
  87. include l0p1.m
  88. include l0p2.m
  89. include l0p3.m
  90. include l0p4.m
  91. include l0p5.m
  92. include l0p6.m
  93. include l0p7.m
  94. include l0p8.m
  95. include l0p9.m
  96.  
  97. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  98. ; Check for no jerky switch
  99. ; Out:
  100. ;   EAX,EBX,ECX,EDX,ESI,EDI,EBP - ?
  101. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  102. _l0_setup:
  103.         mov al,'j'
  104.         call _cchekswitchnc
  105.         jc _ret
  106.         mov word ptr d3sizetbl[6],505h
  107.         ret
  108.  
  109. ;─────────────────────────────────────────────────────────────────────────────
  110. delay:                                  ; wait a specified number of ticks
  111.         dec delaycntr
  112.         jnz _ret
  113.         jmp setnext
  114. ;─────────────────────────────────────────────────────────────────────────────
  115. waitpals:                               ; wait for end of palette slide
  116.         cmp _vrt_rout,offset _ret
  117.         jne _ret
  118.         jmp setnext
  119. ;─────────────────────────────────────────────────────────────────────────────
  120. waitpal:                                ; wait for palette to be set
  121.         cmp _vrt_pallen,0
  122.         jne _ret
  123.         jmp setnext
  124.  
  125. ;─────────────────────────────────────────────────────────────────────────────
  126. setnext:
  127.         movzx eax,routtblindex
  128.         inc eax
  129.         cmp al,ROUTTBLLEN
  130.         jb short setnextf0
  131.         mov ebx,_loop
  132.         sub ebx,1
  133.         jc short setnextf1
  134.         jnz short setnextf2
  135.         mov dword ptr [esp],offset _done
  136. setnextf2:
  137.         mov _loop,ebx
  138. setnextf1:
  139.         mov eax,pal0aptr
  140.         add eax,64*3
  141.         cmp eax,offset pal0a+64*3*6
  142.         jb short setnextf3
  143.         mov eax,offset pal0a
  144. setnextf3:
  145.         mov pal0aptr,eax
  146.         mov eax,ROUTTBLSTART
  147. setnextf0:
  148.         mov ebx,routtbl[eax*4]
  149.         mov _l0rout,ebx
  150.         mov routtblindex,al
  151.         ret
  152.  
  153. ;─────────────────────────────────────────────────────────────────────────────
  154. nextpal:
  155.         cmp _ending,0
  156.         jne short nextpalf0
  157.  
  158.         movzx edx,palindex
  159.         inc edx
  160.         cmp dl,PALTBLLEN
  161.         jb short nextpalf1
  162.         xor dl,dl
  163. nextpalf1:
  164.         mov palindex,dl
  165.  
  166.         mov esi,palptrtbl[edx*4]
  167.         shl al,6
  168.  
  169.         mov _vrt_palptr,esi
  170.         mov _vrt_pallen,64
  171.         mov _vrt_palindex,al
  172.  
  173.         movzx edi,al
  174.         lea edi,[edi*2+edi+offset _cpal]
  175.         mov ecx,64*3
  176.         rep movsb
  177.  
  178.         ret
  179. nextpalf0:
  180.         add esp,4
  181.         ret
  182.  
  183. ;─────────────────────────────────────────────────────────────────────────────
  184. nextpals:
  185.         cmp _ending,0
  186.         jne short nextpalsf0
  187.  
  188.         movzx edx,palindex
  189.         inc edx
  190.         cmp dl,PALTBLLEN
  191.         jb short nextpalsf1
  192.         xor dl,dl
  193. nextpalsf1:
  194.         mov palindex,dl
  195.  
  196.         mov esi,palptrtbl[edx*4]
  197.         shl al,6
  198.  
  199.         mov _pals_ptr,esi
  200.         mov _pals_len,64
  201.         mov _pals_index,al
  202.         mov _vrt_rout,offset _pals
  203.  
  204.         ret
  205. nextpalsf0:
  206.         add esp,4
  207.         ret
  208.  
  209. ;═════════════════════════════════════════════════════════════════════════════
  210. _l0start:
  211. m00:
  212.         @palnexts 0
  213.         jmp setnext
  214. m01:
  215.         @palnexts 1
  216.         jmp setnext
  217. m02:
  218.         @set_palso 0,64,_bpal
  219.         jmp setnext
  220. m03:
  221.         @palnexts 2
  222.         jmp setnext
  223. m04:
  224.         mov eax,pal0aptr
  225.         @set_pals 192,64,eax
  226.         @palnext 1
  227.         jmp setnext
  228. m05:
  229.         @palnexts 2
  230.         mov d3tile[0],offset tile00
  231.         mov d3tile[4],offset tile01
  232.         mov d3tile[8],offset tile02
  233.         mov d3tile[12],offset tile03
  234.         mov d3counter,10h
  235.         mov delaycntr,2
  236.         jmp setnext
  237. m06:
  238.         mov _l1on,1
  239.         @set_palso 128,64,_bpal
  240.         mov d3counter,20h
  241.         jmp setnext
  242. m07:
  243.         mov d3tile[0],offset tile04
  244.         mov d3tile[4],offset tile05
  245.         mov d3tile[8],offset tile06
  246.         mov d3tile[12],offset tile07
  247.         mov d3counter,40h
  248.         jmp setnext
  249. m08:
  250.         @palnexts 1
  251.         mov delaycntr,80h
  252.         jmp setnext
  253. m09:
  254.         mov _l2on,1
  255.         @palnext 2
  256.         @palnexts 1
  257.         jmp setnext
  258. m0a:
  259.         mov d3tile[0],offset tile08
  260.         mov d3tile[4],offset tile09
  261.         mov d3tile[8],offset tile0a
  262.         mov d3tile[12],offset tile0b
  263.         mov d3counter,10h
  264.         mov delaycntr,40h
  265.         jmp setnext
  266. m0b:
  267.         mov delaycntr,40h
  268.         jmp setnext
  269. m0c:
  270.         @set_palso 0,192,_bpal
  271.         jmp setnext
  272. m0d:
  273.         @palnext 0
  274.         mov delaycntr,40h
  275.         jmp setnext
  276. m0e:
  277.         @palnext 1
  278.         mov d3tile[0],offset tile0c
  279.         mov d3tile[4],offset tile0d
  280.         mov d3tile[8],offset tile0e
  281.         mov d3tile[12],offset tile0f
  282.         mov d3counter,10h
  283.         mov delaycntr,40h
  284.         jmp setnext
  285. m0f:
  286.         @palnext 2
  287.         mov d8tile,offset tile10
  288.         mov delaycntr,40h
  289.         jmp setnext
  290. m10:
  291.         mov d3tile[0],offset tile11
  292.         mov d3tile[4],offset tile12
  293.         mov d3tile[8],offset tile13
  294.         mov d3tile[12],offset tile14
  295.         mov d3counter,10h
  296.         jmp setnext
  297. m11:
  298.         @palnext 0
  299.         @set_palso 128,64,_bpal
  300.         mov d3counter,40h
  301.         mov delaycntr,40h
  302.         jmp setnext
  303. m12:
  304.         movzx edx,palindex
  305.         mov ebx,palptrtbl[edx*4]
  306.         add ebx,63*3
  307.         @set_pals 64,64,ebx
  308.         jmp setnext
  309. m13:
  310.         @palnext 2
  311.         jmp setnext
  312. m14:
  313.         @set_palo 0,64,_bpal
  314.         @set_palso 128,64,_bpal
  315.         jmp setnext
  316. m15:
  317.         @palnexts 0
  318.         mov d3tile[0],offset tile15
  319.         mov d3tile[4],offset tile16
  320.         mov d3tile[8],offset tile17
  321.         mov d3tile[12],offset tile18
  322.         mov d3counter,20h
  323.         mov delaycntr,80h
  324.         jmp setnext
  325. m16:
  326.         mov d3tile[0],offset tile19
  327.         mov d3tile[4],offset tile1a
  328.         mov d3tile[8],offset tile1b
  329.         mov d3tile[12],offset tile1c
  330.         mov d3counter,10h
  331.         mov delaycntr,40h
  332.         jmp setnext
  333.  
  334. code32  ends
  335.         end
  336.  
  337.